﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
using System.Runtime.Serialization;
using ddcCajamarca.BusinessEntities.Directorio;
using ddcCajamarca.Repository.Directorio.Service;

namespace ddcCajamarca.Repository.Directorio
{
    public class VocativoRepository : MasterRepository, IVocativoRepository
    {
        public Vocativo GetFromVocativoById(int id)
        {
            var query = Context.Database.SqlQuery<Vocativo>("dbo.ShowVocativoById @id=" + id).SingleOrDefault();

            return query;
        }

        public IEnumerable<Vocativo> GetAllVocativo()
        {
            var query = Context.Database.SqlQuery<Vocativo>("dbo.ShowAllVocativo").ToList();

            return query;
        }

        public IEnumerable<Vocativo> GetVocativoByCriterio(string criterio)
        {
            IEnumerable<Vocativo> query;

            if (String.IsNullOrEmpty(criterio))
            {
                query = Context.Database.SqlQuery<Vocativo>("dbo.SHowAllVocativoLista").ToList();
            }
            else
            {
                query = Context.Database.SqlQuery<Vocativo>("dbo.ShowVocativoByCriterio @descripcion = '" + criterio + "'").ToList();
            }

            return query;
        }

        public void AddVocativo(Vocativo vocativo)
        {
            Context.Database.ExecuteSqlCommand("dbo.NewOrEditVocativo @id= '"
                + vocativo.Id + "', @descripcion = '"
                + vocativo.Descripcion + "', @abreviatura = '"
                + vocativo.Abreviatura + "'");
        }

        public void UpdateVocativo(Vocativo vocativo)
        {
            Context.Database.ExecuteSqlCommand("dbo.NewOrEditVocativo @id= '"
                + vocativo.Id + "', @descripcion = '"
                + vocativo.Descripcion + "', @abreviatura = '"
                + vocativo.Abreviatura + "'");
        }

        public void DeleteVocativo(int id)
        {
            var existe = Context.Database.SqlQuery<Vocativo>("dbo.ShowVocativoById @id=" + id).SingleOrDefault();
                        
            try
            {
                if (existe != null)
                {
                    Context.Database.ExecuteSqlCommand("dbo.DeleteVocativo @id = '" + id + "'");
                }
            }
            catch (Exception e)
            {
                string v = e.Message;
            }

        }


        public IEnumerable<Vocativo> GetAllVocativoLista()
        {
            var query = Context.Database.SqlQuery<Vocativo>("dbo.SHowAllVocativoLista").ToList();

            return query;
        }
    }
}
